package com.training.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Web MVC 配置类
 * 用于配置静态资源映射等
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    /**
     * 从 application.properties 文件中注入配置的上传文件基础目录
     * 例如: D:/projectx/bvcd/training-system/uploads
     */
    @Value("${file.upload-base-dir}")
    private String uploadBaseDir;

    /**
     * 重写此方法来添加自定义的资源处理器
     * @param registry 资源处理器注册表
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // --- 核心配置：将URL路径映射到服务器上的物理文件路径 ---

        // 1. 映射资讯图片的URL
        // 当浏览器请求的URL以 "/info_images/" 开头时 (例如: /info_images/abc.png)
        // Spring Boot会去物理磁盘的 "file:D:/.../uploads/info_images/" 目录下查找对应的文件
        registry.addResourceHandler("/info_images/**")
                .addResourceLocations("file:" + uploadBaseDir + "/info_images/");

        // 2. 映射课程封面的URL
        // 同理，处理课程封面的请求
        registry.addResourceHandler("/course_covers/**")
                .addResourceLocations("file:" + uploadBaseDir + "/course_covers/");

        // 3. 映射视频文件的URL (如果您的项目有视频上传功能)
        registry.addResourceHandler("/uploads/**")
                .addResourceLocations("file:" + uploadBaseDir + "/");
    }
}